package codeforces;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.StreamTokenizer;

public class CF1528B {
    final int N = (int) (1e6 + 5);
    final int M = 998244353;

    int[] dp = new int[N];
    int s;

    private void run() throws IOException {
        init();
        int n = readInt();
        System.out.println(dp[n]);
    }

    private void init() {
        for (int i = 1; i < N; i++) {
            dp[i]++;
            for (int j = i * 2; j < N; j += i)
                dp[j]++;
        }

        dp[1] = s = 1;
        for (int i = 2; i < N; i++) {
            dp[i] = (dp[i] + s) % M;
            s = (s + dp[i]) % M;
        }
    }

    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    StreamTokenizer st = new StreamTokenizer(br);

    private long readLong() throws IOException {
        st.nextToken();
        return (long) st.nval;
    }

    private int readInt() throws IOException {
        return (int) readLong();
    }

    private String readString() throws Exception {
        st.nextToken();
        return st.sval;
    }

    public static void main(String[] args) throws Exception {
        new CF1528B().run();
    }

}
